home *** CD-ROM | disk | FTP | other *** search
- var ITERATOR_INDEX = 0;
- var ITERATOR_OBJECT_LIST = 1;
-
- /**
- user methods to access the iterator
- */
-
- function iterator_has_next(iterator)
- {
- if (iterator_assert(iterator, "iterator_has_next"))
- {
- if (iterator[ITERATOR_INDEX] == iterator[ITERATOR_OBJECT_LIST].length)
- return false;
- else
- return true;
- }
- return false
- }
-
- function iterator_next(iterator)
- {
- if (iterator_assert(iterator, "iterator_next"))
- {
- var returnValue = iterator[ITERATOR_OBJECT_LIST][iterator[ITERATOR_INDEX]];
- iterator[ITERATOR_INDEX]++;
- return returnValue;
- }
- else
- {
- return null;
- }
- }
-
- function iterator_previous_index(iterator)
- {
- if (iterator_assert(iterator, "iteratorCurrentIndex"))
- {
- return iterator[ITERATOR_INDEX]-1;
- }
- else
- {
- return null;
- }
- }
-
- function iterator_next_index(iterator)
- {
- if (iterator_assert(iterator, "iteratorCurrentIndex"))
- {
- return iterator[ITERATOR_INDEX];
- }
- else
- {
- return null;
- }
- }
-
- /**
- System methods to create and populate the iterator
- */
-
- function new_iterator()
- {
- var iterator = new Array();
- iterator[ITERATOR_INDEX] = 0;
- iterator[ITERATOR_OBJECT_LIST] = new Array();
-
- return iterator; // no elements
- }
-
- function iterator_add(iterator, value)
- {
- iterator[ITERATOR_OBJECT_LIST][iterator[ITERATOR_OBJECT_LIST].length] = value;
- }
-
- function iterator_add_array(iterator, arr)
- {
- for (var x=0; x<arr.length; x++)
- {
- iterator_add(iterator, arr[x]);
- }
- }
-
- function iterator_assert(iterator, functionName)
- {
- var bad = false;
- if (iterator == null)
- {
- bad = true;
- }
- else
- {
- if (iterator.length != 2)
- bad = true;
- }
- if (bad)
- {
- alert("You did not pass an Iterator to " + functionName);
-
- var tmp = null;
- alert(tmp.length); // cause an error
- }
-
- return !bad;
- }
-
-